﻿using UD.GRAL.Entity;
using UD.Utilities.Exceptions;
using UD.GRAL.Business;
using System.Collections.Generic;
using System;

namespace UD.GRAL.Service
{
    public class GRALService
    {
        private MunicipioBLL oMunicipioBLL;
        private TipoDocumentoBLL oTipoDocumentoBLL;
        private DepartamentoBLL oDepartamentoBLL;
        private TipoCursoBLL oTipoCursoBLL;
        private ProyectoCurricularUDBLL oProyectoCurricularUDBLL;
        private FacultadUDBLL oFacultadUDBLL;

        public GRALService()
        {
            oMunicipioBLL = new MunicipioBLL();
            oTipoDocumentoBLL = new TipoDocumentoBLL();
            oDepartamentoBLL = new DepartamentoBLL();
            oTipoCursoBLL = new TipoCursoBLL();
            oProyectoCurricularUDBLL = new ProyectoCurricularUDBLL();
            oFacultadUDBLL = new FacultadUDBLL();
        }

        #region Municipio    

        public List<Municipio> ConsultarMunicipios(String pCodMunicipio, String pNombreMunicipio, Boolean? pEstado)
        {
            try
            {
                return oMunicipioBLL.ConsultarMunicipios(pCodMunicipio, pNombreMunicipio, pEstado);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        #endregion


        #region TipoDocumento

        public List<TipoDocumento> ConsultarTipoDocumentos(String pCodTipoDocumento, String pNombreTipoDocumento, Boolean? pEstado)
        {
            try
            {
                return oTipoDocumentoBLL.ConsultarTipoDocumentos(pCodTipoDocumento, pNombreTipoDocumento, pEstado);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        #endregion


        #region Departamento

        public List<Departamento> ConsultarDepartamentos(String pCodDepartamento, String pNombreDepartamento, Boolean? pEstado)
        {
            try
            {
                return oDepartamentoBLL.ConsultarDepartamentos(pCodDepartamento, pNombreDepartamento, pEstado);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        #endregion


        #region TipoCurso

        public List<TipoCurso> ConsultarTipoCursos(String pCodTipoCurso, String pNombreTipoCurso, Boolean? pEstado)
        {
            try
            {
                return oTipoCursoBLL.ConsultarTipoCursos(pCodTipoCurso, pNombreTipoCurso, pEstado);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        #endregion


        #region ProyectoCurricularUD

        public List<ProyectoCurricularUD> ConsultarProyectoCurricularUDs(String pCodProyectoCurricular, String pNombreProyectoCurricular, Boolean? pEstado)
        {
            try
            {
                return oProyectoCurricularUDBLL.ConsultarProyectoCurricularUDs(pCodProyectoCurricular, pNombreProyectoCurricular, pEstado);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        #endregion


        #region FacultadUDBLL

        public List<FacultadUD> ConsultarFacultadUDs(String pCodFacultad, String pNombreFacultad, Boolean? pEstado)
        {
            try
            {
                return oFacultadUDBLL.ConsultarFacultadUDs(pCodFacultad, pNombreFacultad, pEstado);
            }
            catch (UserInterfaceException)
            {
                throw;
            }
            catch (Exception ex)
            {
                throw new GenericException(ex);
            }
        }

        #endregion
    }
}
